package com.zzw.springboot.annotation;

import java.lang.annotation.*;

/**
 * 接口限流注解
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimit {

    /**
     * 限流键前缀
     */
    String prefix() default "rate:limit:";

    /**
     * 限流时间周期（秒）
     */
    int period() default 60;

    /**
     * 周期内最大请求次数
     */
    int count() default 100;

    /**
     * 限流类型
     */
    LimitType limitType() default LimitType.IP;

    /**
     * 限流类型枚举
     */
    enum LimitType {
        /**
         * 按IP地址限流
         */
        IP,

        /**
         * 按用户ID限流
         */
        USER,

        /**
         * 按接口限流
         */
        INTERFACE
    }
} 